Authored: Kathy N. Lam
Experiment: March 8, 2020
Updated: April 15, 2021
library(flowCore) #for reading and manipulating flow data
library(ggcyto) #for using ggplot with flow data
library(scales) #for nice plot axes
library(cowplot) #for multi panel plots
library(Phenoflow) #for rarefying
library(tidyverse) #for data wrangling and plotting
(fs = read.flowSet(path="data_fcs"))
## A flowSet with 100 experiments.
##
## column names:
## 530/30 Blue B-A 610/20 YG C-A FSC-A FSC-H FSC-W SSC-A SSC-H SSC-W Time
colnames(fs)
## [1] "530/30 Blue B-A" "610/20 YG C-A" "FSC-A" "FSC-H"
## [5] "FSC-W" "SSC-A" "SSC-H" "SSC-W"
## [9] "Time"
pData(phenoData(fs))
#read in sample names and merge
metadata = read_tsv("metadata.tsv") %>%
rename(name=Filename) %>%
mutate(Mouse = paste("Mouse", Mouse)) %>%
mutate(Day = paste("Day", Timepoint)) %>%
mutate(Treatment_Mouse = paste0(Treatment, "\n", Mouse)) %>%
mutate(Mouse_Treatment = paste0(Mouse, " (", Treatment, ")"))
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## FlowSampleNumber = col_double(),
## `Mouse Sample Number` = col_double(),
## Experiment = col_character(),
## Treatment = col_character(),
## Timepoint = col_double(),
## Mouse = col_double(),
## Filename = col_character()
## )
metadata$Mouse = factor(metadata$Mouse, levels= unique(metadata$Mouse))
metadata$Treatment_Mouse = factor(metadata$Treatment_Mouse, levels=unique(metadata$Treatment_Mouse))
metadata$Mouse_Treatment = factor(metadata$Mouse_Treatment, levels=unique(metadata$Mouse_Treatment))
metadata$Treatment = factor(metadata$Treatment, levels=unique(metadata$Treatment))
metadata$Day = factor(metadata$Day, levels=unique(metadata$Day))
metadata
#add columns to phenoData
phenoData(fs)$Order = seq(1, length(phenoData(fs)$name))
phenoData(fs)$Treatment = metadata$Treatment
phenoData(fs)$Timepoint = metadata$Timepoint
phenoData(fs)$Day = metadata$Day
phenoData(fs)$Name = metadata$name
phenoData(fs)$Mouse = metadata$Mouse
phenoData(fs)$Treatment_Mouse = metadata$Treatment_Mouse
phenoData(fs)$Mouse_Treatment = metadata$Mouse_Treatment
pData(phenoData(fs))
#make labeller function for facet_wrap
order = as.character(phenoData(fs)$Order)
name = phenoData(fs)$Name
order_names = mapply(c, order, name, SIMPLIFY = FALSE) #make a one-to-one
order_names = lapply(order_names, `[[`, 2) #keep second element of each vector in the list
order_names = order_names[as.character(sort(as.numeric(names(order_names))))] #numerically sort
order_labeller = function(variable,value){
return(order_names[value])
}
scatter = rbind(c(0, 1e4),
c(1e5, 1e4),
c(1e5, 2.5e5),
c(0, 2.5e5))
colnames(scatter)=c("FSC-A", "SSC-A")
scatter = as.data.frame(scatter)
ggplot() +
geom_point(data=fs, aes(x=`FSC-A`, y=`SSC-A`), shape=16, size=0.75, alpha=0.5) +
scale_y_continuous(name="SSC-A (Granularity)\n", limits = c(-2e1,3e5)) +
scale_x_continuous(name="\nFSC-A (Size)", limit=c(-2e1,3e5)) +
facet_grid(Mouse~Timepoint) +
theme_linedraw(14) +
theme(panel.grid = element_blank(), axis.text.x=element_text(angle=90,hjust=1)) +
geom_polygon(data=scatter, aes(x=`FSC-A`, y=`SSC-A`), fill=NA, colour="indianred", size=0.5, linetype="solid")
## Warning: Removed 5093378 rows containing missing values (geom_point).